import axios from 'axios';
import store from '../../store';
import { getToken } from '@/utils/auth';

const BASE_API = '/e_report'; // nginx 上监控该接口记录日志，用于统计，具体事件见./ev.js
// const BASE_API = 'https://test.fbcrm.feibo.com/e_report'; // test

// 创建axios实例
const service = axios.create({
  baseURL: BASE_API, // api 的 base_url
  timeout: 20000, // 请求超时时间
  headers: {
    'Content-Type': 'application/json'
  },
  transformRequest: [data => {
    return typeof data === 'string' ? data : JSON.stringify(data);
  }] // 参数转换NODE_ENV
});

// 设置默认的请求时间间隙
// axios.defaults.retry = 5;
// axios.defaults.retryDelay = 1000;

// request拦截器, 先于RAP拦截
service.interceptors.request.use(config => {
  const token = store.getters.token || getToken(); // 获取本地Token
  if (token) {
    config.headers.common['token'] = token; // 让每个请求携带自定义token 请根据实际情况自行修改
  }
  return config;
}, error => {
  // Do something with request error
  console.error('request error：', error); // for debug
  Promise.reject(error);
});

// response 拦截器，先于AWS拦截
service.interceptors.response.use(response => {
  /**
   * code为非20000是抛错 可结合自己业务进行修改
   */
  const res = response.data;
  if (res.code !== 200) {
    const message = res.message;
    console.error(`Code Error: ${message}`);
    return Promise.reject({ message, code: res.code, data: res.data });
  } else {
    return response.data;
  }
}, error => {
  console.error('Respone error:' + error);
  if (error.message === 'Network Error') {
    return Promise.reject({ message: '网络错误！请检查网络状态...' });
  }
  return Promise.reject(error);
});

export default service;
